package dancereal;

public class J09_While {

	// 반복문 loop
	// 가끔 어떤 동작을 여러 번 수행해야 할 때가 있음
	// 코드를 복사해서 반복을 해도 해결되지 않는 문제 발생
	// 반복횟수가 5번이면 코드 줄수도 5줄 작성
	// 코드내 내용이 수정되면 그 사본도 수정

	// 이것에 대한 현명한 방법은
	// 반복문 안에 코드를 넣는 것
	// 즉, 반복할 코드를 한줄만 작성하고
	// 컴파일러에게 이 코드를 몇번이고
	// 반복 실행하라고 지시할 수 있음

	// 반복문의 종류
	// while,do-while,(반복횟수를 모를때)// for(반복횟수를 알 때)

	// while
	// while(조건식){
	// 문장;
	// }
	// 조건식의 결과가 참이면
	// 블록 안의 문장이 실행되고
	// 다시, 조건식을 검사
	// 따라서, 반복 실행을 중단하려면
	// 조건식의 결과가 거짓이되도록 만들거나
	// break 문을 사용하면 됨

	// 반복문의 처리 과정을 단계별로 파악하려면
	// 통합 개별환경의 디버깅 기능을 이용하면 됨

	// break, continue
	// break 문은 while, do-while, for 문의 반복실행을
	// 중단하기 위해 사용
	// break 문을 아무대나 사용하면 컴파일 오류 발생

	// continue 문은 while, do-while, for 문의
	// 현재 반복을 중단하고 다음 반복의 시작으로
	// 제어를 넘김

	public static void main(String[] args) {
		// 반복 처리문을 사용하지 않았을 때
		System.out.println("춥고 배고프고 졸리다"); // 1번

		System.out.println("춥고 배고프고 졸리다"); // 3번
		System.out.println("춥고 배고프고 졸리다");
		System.out.println("춥고 배고프고 졸리다");

		System.out.println("춥고 배고프고 졸리다"); // 5번
		System.out.println("춥고 배고프고 졸리다");
		System.out.println("춥고 배고프고 졸리다");
		System.out.println("춥고 배고프고 졸리다");
		System.out.println("춥고 배고프고 졸리다");

		// 문제1 : 반복문을 사용하지 않고
		// '시간은 금이라구, 친구!!'라는 문장을
		// 5번 반복 출력

		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");

		// 반복문을 이용하면 다음과 같음

		int count = 1;
		while (count < 5) {
			System.out.println("시간은 금이라구, 친구!!");
			count = count + 1;
		}

		// 문제2 : 반복문을 사용하지 않고
		// 1 ~ 10 까지 출력

		System.out.println(1);
		System.out.println(2);
		System.out.println(3);
		System.out.println(4);
		System.out.println(5);
		System.out.println(6);
		System.out.println(7);
		System.out.println(8);
		System.out.println(9);
		System.out.println(10);

		int count1 = 0;
		while (count1 < 10) {
			System.out.println(count1 + 1);
			count1 = count1 + 1; // count = count + 1;
		}

		// 문제 3: 반복문을 이용해서
		// 19단의 19단을 출력해봄
		// 19 x 1 = 19
		// 19 x 2 = 38
		// ......
		// 19 x 19 = 361

		int gu = 19;
		int dan = 1;
		while (dan <= 19) {
			System.out.println("19 x " + dan + "=" + gu * dan);
			dan = dan + 1;
		}
		// 문제 4 : 반복문과 break 를 이용해서
		// 1~10까지 출력하는 프로그램

		int count2 = 1;
		while (count2 <= 10) {
			System.out.println(count2);
			++count2;
		} // break 를 사용하지 않음

		while (true) {
			if (count2 > 10)
				break;
			System.out.println(count2);
			++count2;

		}

		// 문제 5: 반복문과 continue 를 이용해서
		// 1~10까지 출력하는 프로그램
		// 단, 5는 출력하지 않음

		while (count2 <= 10) {
            if(count2 != 5 ) 
            System.out.println(count2);
			++count2;
		} // continue 를 사용하지 않았을 때

		while (count2 <= 10) {
            if(count2 == 5 ) {++count2; continue;}
            System.out.println(count2);
			++count2;
		}// continue 를 사용했을때
		
		 // 문제 6 : 1 ~ 100 사이에
		 // 짝수만 출력하는 프로그램
		   
		int i;
		for (i=1; i<=100;i++){
			if(i%2==0){
				System.out.println(i + "<<100까지 짝수만 출력");
			}
		}
	    
         // 문제 7 : 1 ~ 100 사이에
		 // 홀수만 출력하는 프로그램
		int j;
		for (j=1; j<=99;j++){
			if(j%2==1){
				System.out.println(j + "<<100까지 홀수만 출력");
			}
		 
	}
	}
}
